# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-06-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.神笔库 import 神笔模板
from 神笔码靓.神笔库.线条工具集 import *
from 神笔码靓.神笔库.通用工具集 import *


class 圆形印章神笔模板(神笔模板):
    def 模板ID(self):
        return "圆形印章"

    def _init(self, 圆心点,
              主文字="主文主文主文字填写科技有限公司", 主文字字体=系统字体.宋体, 主文字大小=12, 主文字间距=0,
              中心文字="★", 中心文字字体=系统字体.宋体, 中心文字大小=None,
              抬头文字="抬头文字区", 抬头文字字体=系统字体.宋体, 抬头文字大小=11, 抬头文字上下微调=0, 抬头文字间距=0,
              副文字="123456789123456789", 副文字字体=系统字体.Verdana, 副文字大小=10, 副文字间距=0,
              半径=50, 描边宽度=None, 颜色=颜色.红色):
        self.圆心点 = 圆心点

        if 描边宽度 is None:
            描边宽度 = 半径 / 50 * 4

        if 中心文字大小 is None:
            中心文字大小 = 半径 / 50 * 40

        self.主文字 = 主文字
        self.主文字字体 = 主文字字体
        self.主文字大小 = 主文字大小
        self.主文字间距 = 主文字间距
        self.中心文字 = 中心文字
        self.中心文字字体 = 中心文字字体
        self.中心文字大小 = 中心文字大小
        self.抬头文字 = 抬头文字
        self.抬头文字字体 = 抬头文字字体
        self.抬头文字大小 = 抬头文字大小
        self.抬头文字上下微调 = 抬头文字上下微调
        self.抬头文字间距 = 抬头文字间距
        self.副文字 = 副文字
        self.副文字字体 = 副文字字体
        self.副文字大小 = 副文字大小
        self.副文字间距 = 副文字间距
        self.半径 = 半径
        self.描边宽度 = 描边宽度
        self.颜色 = 颜色

    def _外圆(self):
        x, y = self.圆心点
        return self.绘图板.画圆(x=x, y=y, 半径=self.半径, 描边宽度=self.描边宽度, 描边颜色=self.颜色)

    def _主文字(self):
        x, y = self.圆心点
        # 2. 主文字
        # 宽, 高 = 获取文字的宽高(主文字字体, 主文字大小, 主文字)
        # angle = (150 - 宽) / 1.85
        主文字路径 = 创建圆路径(x=x, y=y, 半径=self.半径 / 50 * 37, 旋转角度=-90)

        # self.绘图板.连线(主文字路径)
        return self.绘图板.路径文字(主文字路径, self.主文字, 填充颜色=self.颜色,
                             字体大小=self.主文字大小, 字体=self.主文字字体, 字符间距=self.主文字间距)

    def _中心文字(self):
        x, y = self.圆心点
        return self.绘图板.写字(x=x, y=y + 3, 文字=self.中心文字, 填充颜色=self.颜色, 字体大小=self.中心文字大小, 字体=self.中心文字字体)

    def _抬头文字(self):
        x, y = self.圆心点
        if 不为空(self.中心文字):
            y_o = max(self.半径 * 0.35, self.中心文字大小 / 2.1)
        else:
            y_o = self.半径 * 0.35

        return self.绘图板.写字(x, y + y_o + self.抬头文字上下微调, self.抬头文字, 填充颜色=self.颜色, 字体大小=self.抬头文字大小,
                           字体=self.抬头文字字体, 垂直基线对齐=文字垂直基线对齐.顶线对齐, 字符间距=self.抬头文字间距)

    def _副文字(self):
        x, y = self.圆心点
        副文字路径 = 创建圆路径(x=x, y=y, 半径=self.半径 / 50 * 45, 顺时针=否, 旋转角度=90)
        # self.绘图板.连线(副文字路径)
        return self.绘图板.路径文字(副文字路径, self.副文字, 填充颜色=self.颜色, 字体大小=self.副文字大小, 字体=self.副文字字体,
                             字符间距=self.副文字间距)

    def 元素列表(self):

        圆心点 = self.获取参数("圆心点", (100, 100))
        颜色_ = self.获取参数("颜色", 颜色.红色)
        主文字 = self.获取参数("主文字", "Python超人科技有限公司")
        主文字字体 = self.获取参数("主文字字体", 系统字体.华文新魏)
        主文字间距 = self.获取参数("主文字间距", -0.5)
        抬头文字 = self.获取参数("抬头文字", "办公专用")
        抬头文字字体 = self.获取参数("抬头文字字体", 系统字体.华文新魏)
        抬头文字大小 = self.获取参数("抬头文字大小", 11)
        抬头文字上下微调 = self.获取参数("抬头文字上下微调", -2)
        抬头文字间距 = self.获取参数("抬头文字间距", -1)
        副文字 = self.获取参数("副文字", "93503454824")
        副文字大小 = self.获取参数("副文字大小", 9)
        副文字间距 = self.获取参数("副文字间距", 0)

        self._init(圆心点=圆心点, 颜色=颜色_,
                   主文字=主文字, 主文字字体=主文字字体, 主文字间距=主文字间距,
                   抬头文字=抬头文字, 抬头文字字体=抬头文字字体, 抬头文字大小=抬头文字大小,
                   抬头文字上下微调=抬头文字上下微调, 抬头文字间距=抬头文字间距,
                   副文字=副文字, 副文字大小=副文字大小, 副文字间距=副文字间距)

        元素列表 = [self._外圆(), self._主文字()]

        if 不为空(self.中心文字):
            元素列表.append(self._中心文字())

        if 不为空(self.抬头文字):
            元素列表.append(self._抬头文字())

        if 不为空(self.副文字):
            元素列表.append(self._副文字())

        return 元素列表
